package main.哈希;

import java.util.*;

/**
 * @author tmh
 * @date 2024/7/9 16:38
 * @description
 */
public class T49字母异位词分组 {
    public List<List<String>> groupAnagrams(String[] strs) {
        //构造一个hashMap保存结果
        Map<String,List<String>> map =new HashMap<>();
        for (String str : strs) {
            //把数组里面的每个字符串转为字符数组，然后对字符数组进行排序
            char[] charArray = str.toCharArray();
            Arrays.sort(charArray);
            //在继续把字符数组转为字符串
            String result  =  new String(charArray);
            //调用getOrDefault判断有没有这个字符串对应的值，没有的话我们就返回一个空集合
            List<String> list = map.getOrDefault(result, new ArrayList<>());
            list.add(str);
            //往map里面放结果
            map.put(result,list);
        }
        //直接返回map.values()会报错，我们就把map.values()作为参数传给ArrayList的构造方法
        return new ArrayList<>(map.values());
    }
}
